package com.wuji1626.spark.rdd.transform

import org.apache.spark.{SparkConf, SparkContext}

object RDD_Transform_MultipleValue {

  def main(args: Array[String]): Unit = {
    // Step1: 准备环境
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
    val sc = new SparkContext(sparkConf)
    // Step2: 算子 双Value 类型
    val rdd1 = sc.makeRDD(List(1, 2, 3, 4))
    val rdd2 = sc.makeRDD(List(3, 4, 5, 6))

    // 交集 期望【3,4】
    val rdd3 = rdd1.intersection(rdd2)
    println("Intersection：" + rdd3.collect().mkString(","))
//    val rdd7 = sc.makeRDD(List("1", "2", "3", "4"))
//    rdd1.intersection(rdd7)

    // 并集 期望【1,2,3,4,3,4,5,6】
    val rdd4 = rdd1.union(rdd2)
    println("Union：" + rdd4.collect().mkString(","))

    // 差集 期望【1,2】
    val rdd5 = rdd1.subtract(rdd2)
    println("Subtract：" + rdd5.collect().mkString(","))


    // 拉链 期望【(1,3),(2,4),(3,5),(4,6)】
    val rdd6 = rdd1.zip(rdd2)
    println("Zip：" + rdd6.collect().mkString(","))


    // Step3: 关闭环境
    sc.stop()
  }

}
